
#ifndef __SDK_TASKJOURNEY__INCLUDE__
#define __SDK_TASKJOURNEY__INCLUDE__

#include "time.h"

namespace nebula { namespace sdk {

class IServiceLog
{
public:
	virtual ~IServiceLog() {};

public:
	virtual const char*  GetContent() = 0;
	virtual const time_t GetLogTime() = 0;
};


class IJourneyNode
{
public:
	virtual ~IJourneyNode() {};

public:
	virtual const char*  ServiceName () = 0;
	virtual const char*  NodeName    () = 0;
	virtual const char*  HostName    () = 0;

	virtual const double InTime () = 0;
	virtual const double OutTime() = 0;

	virtual unsigned     LogCount()                = 0;
	virtual IServiceLog* GetLogAt(unsigned index)  = 0;
	virtual IServiceLog* AddLog  (const char* log) = 0;
};


class ITaskJourney
{
public:
	virtual ~ITaskJourney() {};

public:
	virtual unsigned      NodeCount ()          = 0;
	virtual IJourneyNode* GetNodeAt (unsigned index) = 0;
};

}} //end of nebula::sdk

#endif //end of __SDK_TASKJOURNEY__INCLUDE__

